#

| Chapter 10 The Sed Editor |

## 10.3 Syntax of Sed Commands

Sed commands have the general form:

> [`address`][,`address`][!]`command` [`arguments`]

Sed commands consist of `addresses` and editing `commands`. `commands` consist of a single letter or symbol; they are described later, alphabetically and by group. `arguments` include the label supplied to b or t, the filename supplied to r or w, and the substitution flags for s. `addresses` are described below.

### 10.3.1 Pattern Addressing

A sed command can specify zero, one, or two addresses. An address can be a line number, the symbol $ (for last line), or a regular expression enclosed in slashes (/`pattern`/). Regular expressions are described in Section 6. Additionally, \n can be used to match any newline in the pattern space (resulting from the N command), but not the newline at the end of the pattern space.

If the command specifies: | Then the command is applied to:
--- | ---
No address | Each input line
One address | Any line matching the address. Some commands accept only one address: a, i, r, q, and =.
Two comma-separated addresses | First matching line and all succeeding lines up to and including a line matching the second address.
An address followed by `!` | All lines that do not match the address.

### 10.3.2 Examples

s/xx/yy/g | Substitute on all lines (all occurrences).
/BSD/d | Delete lines containing `BSD`.
/^BEGIN/,/^END/p | Print between `BEGIN` and `END`, inclusive.
/SAVE/!d | Delete any line that doesn't contain `SAVE`.
/BEGIN/,/END/!s/xx/yy/g | Substitute on all lines, except between `BEGIN` and `END`.

Braces ({}) are used in sed to nest one address inside another or to apply multiple commands at the same address.

>     [/pattern/][,/pattern/]{
>     command1
>     command2
>     }

The opening curly brace must end a line, and the closing curly brace must be on a line by itself. Be sure there are no blank spaces after the braces.

10.2 Conceptual Overview |  | 10.4 Group Summary of Sed Commands